Object Oriented Programming [Java] 객체지향 프로그래밍 - 상속 상속을 통해 클래스를 구현하다 보면 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있어서 코드 추가나 변경이 편해요. 여기서 ParentApp 그리고 ChildApp은 상속 관계에 있다고 하고, 상속을 해주는 ParentApp을 부모 클래스, 상속을 받는 ChildApp을 자식 클래스라고 해요. 부모 클래스 자식 클래스 상속 관계를 그림으로 표시하면 아래와 같... Javasuperhas aOverridingOOPinheritanceObject classis-aObject Oriented ProgrammingJava [Java] 객체지향 프로그래밍 - 역사와 클래스 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수로 정희하여 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같은 가상 세계를 구현하고 이 가상세계에서 모의실험을 함으로써 많은 시간과 비용을 절약할 수 있게 되요. 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있어요. 그리고 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있어요. 객체는 TV, 에어컨 ... JavainstancevariablesOOPobjectObject Oriented ProgrammingmethodclassJava [Java] 객체지향 프로그래밍 - 오버로딩 메서드도 변수와 마찬가지로 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 해요. 하지만 한 '클래스' 내에서 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있어도 매개변수 개수 또는 타입이 다르면 같은 이름을 사용해서 정의가 가능해요. 이처럼 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩Overloading, 또는 오버로딩O... Object Oriented ProgrammingVarargsOOPJavaoverloadingJava [Java] 객체지향 프로그래밍 - 생성자 App 클래스를 예로 들어 인스턴스 생성하는 과정은 아래와 같아요. 컴파일을 할 때 소스 파일*.java의 클래스가 생성자가 하나도 없다면 컴파일러는 자동적으로 아래와 같은 생성자를 추가해서 컴파일해요. 아무 기능도 수행하지 않기 때문에 생성과 동시에 초기화가 필요한 인스턴스는 반드시 생성자를 선언해줘야 해요. 근데 만약에 매개변수가 있는, 기본 생성자가 아닌 생성자가 선언되어 있고, 기본 ... Object Oriented ProgrammingConstructordeep copyshallow copyOOPJavaConstructor [Java] 객체지향 프로그래밍 - 클래스 내 변수 초기화 변수를 선언하고 처음으로 값을 저장하는 것을 변수의 초기화라고 해요. 변수의 초기화는 경우에 따라 필수 또는 선택적이기도 하지만, 가능하면 선언과 동시에 적절한 값으로 초기화하는 것이 좋아요. 클래스에선 인스턴스 변수는 따로 초기화하지 않고 사용해도 되요. 자료형에 따라 적절한 값으로 초기화를 해주기 때문이에요. 하지만 지역 변수는 반드시 사용하기 전에 초기화해야 해요. 참고로 각 타입의 기... Constructor InitializationObject Oriented ProgrammingExplicit initializationinitialization blockinstance variableOOPJavaConstructor Initialization [Java] 객체지향 프로그래밍 - 제어자 제어자Modifier는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여할 수 있어요. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있어요. 접근 제어자 : public, protected, default, private 단, 접근 제어자의 경우 한번에 네 가지 중 하나만 사용할 수 있어요(public, private을 동시에 적용할 수 없다는 의미에... abstractstaticObject Oriented ProgrammingencapsulationfinalAccess ModifierOOPJavaAccess Modifier [Java] 객체지향 프로그래밍 - 다형성 객체지향 개념에서 다형성이란 여러가지 형태를 가질 수 있는 능력을 의미하며, 자바에서는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있도록 하여 다형성을 프로그래밍적으로 구현했어요. 위 예제처럼 Person과 NoobNoob이 상속 관계에 있으면 부모 클래스 타입의 변수에 자식 클래스 인스턴스를 참조할 수 있게 해요. 그래서 자식 타입의 참조 변수로 부모 타입의 인스턴스를 참조하는 ... Up castingDown CastingObject Oriented ProgrammingPolymorphisminstanceofOOPJavaDown Casting [Java] 객체지향 프로그래밍 - 추상 클래스 클래스를 설계도에 비유하면, 추상 클래스Abstract Class는 미완성 설계도에 비유할 수 있어요. 미완성 설계도로 제품을 완성할 수 없듯이, 추상 클래스를 통해 인스턴스를 생성할 수 없어요. 추상 클래스는 상속을 통해 자식 클래스에 의해서만 완성될 수 있어요. 제품에 공통으로 사용하는 기능들을 naive하게 구현을 하고 작업하게 된다면 추후 다른 파생 제품을 만들 때도 이런 기반을 숙지... Object Oriented ProgrammingOOPJavaabstract classJava [Java] 객체지향 프로그래밍 - 인터페이스 인터페이스Interface는 추상 메서드를 가지지만 추상화 정도가 높아서 추상 클래스와 달리 구체화된 일반 메서드 또는 멤버 변수를 구성원으로 가질 수 없어요. 오직 추상 메서드와 상수만을 멤버로 가질 수 있고 그 외에 다른 어떤 요소도 허용하지 않아요. 그리고 접근 제어자로 public 또는 default만 사용할 수 있어요. (클래스 메서드와 디폴트 메서드 제외) 원래 인터페이스의 모든 ... Object Oriented ProgramminginterfaceOOPJavaJava [Java] 객체지향 프로그래밍 - 내부 클래스 내부 클래스Inner Class는 클래스 내에 선언된 클래스에요. 한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 클래스를 감추면서 코드의 복잡성을 줄일 수 있어요(캡슐화). 내부 클래스 선언 위치에 따라 구분을 지을 수 있어요. 1. 인스턴스 클래스 외부 클래스의 멤버 변수 선언 위치에 선언해요. 외부 클래스의... Static classObject Oriented Programminganonymous classlocal classinner classInstance ClassOOPJavaInstance Class TIL 25 | JavaScript 객체 지향 프로그래밍 02 👏🏻 그렇기 때문에 이런 형식의 객체를 찍어내는 공장(constructor)을 만들거고, 이제 그 공장을 이용해서 객체를 양산해보자!! 그리고 이 Date 를 이용할때에는 new 라는 키워드를 붙여주고 하지만 그럼에도 우린 d1 이라는 객체를 사용할 수 있다. 그런데 앞에 new 라는 키워드를 붙이면 이제 이 함수는 더이상 일반적인 함수가 아니라!! → kim2에 있는 new Person이나... JavaScriptPrototypeObject Oriented ProgrammingJavaScript TIL14: OOP / Inheritance Patterns 객체지향 프로그래밍에서 Instantiation Patterns를 통해 '캡슐화'와 '추상화'에 대해 어느 정도 이해할 수 있게 되었습니다. 이번에는 Inheritance Patterns를 통해 '상속'과 '다형성'에 대해 살펴보겠습니다. Pseudoclassical에서 '상속' 우선 prototype chain 연결(Instance.__proto__ === Class.prototype) 을... OOPObject Oriented Programming상속inheritance객체지향 프로그래밍OOP [TIL0114] Object Oriented Programming Object Oriented Programming이란? Instantiation Patterns JavaScript에서 Object를 생성하는 방법 JavaScript에서 Prototype은 무엇이고 왜 사용해야 하는가? 1. 객체란 무엇인가? 객체에는 속성과 기능이 있다. 속성: Car(자동차)라는 하나의 아이디어(Calss)가 있다고 생각해 보자. 자동차라는 아이디어는 물체가 될 수 없고... TILObject Oriented ProgrammingObject Oriented Programming [TIL]OOP 기계어(0과 1로만 구성된 컴퓨터의 언어), 어셈블리어(상대적으로 저급언어라 할 수 있고, 몇 가지의 명령어와 변수만 사용한다), 고급언어(고급언어에 가까울수록 인간의 언어와 유사하다)로 나뉘며 자바스크립트는 고급언어에 가깝다. 모든 작업을 하나의 코드 안에서 순차적으로 진행하여 특정 기능을 하게 만든다. 프로그램을 구성하는 모든 요소가 객체로 되어있다! 또한 객체를 사용하지 않으면 불가능하... Object Oriented ProgrammingTILOOPOOP TIL 28 | JavaScript 객체 지향 프로그래밍 05 수업을 보며 정리한 내용입니다. JavaScript의 class 문법이 아니라, 전통적인 방법으로 상속하는 방법을 알아보자! 다른 객체를 상속받기 (자바스크립트 표준에서는 이것을 표준으로 인정하고 있지만 브라우저들에서는 대부분 구현하고 있기 때문에 사실상으론 표준이라고 할 수 있기도 하다😅) superObj 라는 오브젝트를 constructor function이 아니라, 객체를 직접 만드는 ... Object Oriented ProgrammingJavaScriptJavaScript TIL13: OOP / Instantiation Patterns OOP(Object Oriented Programming, 객체지향 프로그래밍) 기본 개념 및 특징 Encapsulation(캡슐화) Abstraction(추상화) Inheritance(상속) Polymorphism(다형성) Instantiation Patterns: 인스턴스 객체 정의 방법 Functional Functional Shared Prototypal Pseudoclassical ... Polymorphism다형성추상화inheritanceObject Oriented Programmingencapsulation상속abstraction캡슐화객체지향 프로그래밍Object Oriented Programming 사용성을 고려해 객체를 설계하자 전략 패턴을 이용해 RouteEdge 객체에서 경로 검색 기준에 필요한 정보를 각기 다른 방식으로 가지고 올 수 있도록 코드를 구현한다면 조금 더 깔끔하게 구현할 수 있을 것이라 생각했다. 위와 같이 enum 클래스를 이용해 경로 검색 기준 별로 instance를 만들고, 각 instance가 전략 객체를 통해 자신에게 맞는 weight를 가져올 수 있게 리팩토링을 진행하였다. 만약 메서드의... 우아한테크코스JavaObject Oriented ProgrammingJava
[Java] 객체지향 프로그래밍 - 상속 상속을 통해 클래스를 구현하다 보면 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있어서 코드 추가나 변경이 편해요. 여기서 ParentApp 그리고 ChildApp은 상속 관계에 있다고 하고, 상속을 해주는 ParentApp을 부모 클래스, 상속을 받는 ChildApp을 자식 클래스라고 해요. 부모 클래스 자식 클래스 상속 관계를 그림으로 표시하면 아래와 같... Javasuperhas aOverridingOOPinheritanceObject classis-aObject Oriented ProgrammingJava [Java] 객체지향 프로그래밍 - 역사와 클래스 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수로 정희하여 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같은 가상 세계를 구현하고 이 가상세계에서 모의실험을 함으로써 많은 시간과 비용을 절약할 수 있게 되요. 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있어요. 그리고 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있어요. 객체는 TV, 에어컨 ... JavainstancevariablesOOPobjectObject Oriented ProgrammingmethodclassJava [Java] 객체지향 프로그래밍 - 오버로딩 메서드도 변수와 마찬가지로 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 해요. 하지만 한 '클래스' 내에서 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있어도 매개변수 개수 또는 타입이 다르면 같은 이름을 사용해서 정의가 가능해요. 이처럼 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩Overloading, 또는 오버로딩O... Object Oriented ProgrammingVarargsOOPJavaoverloadingJava [Java] 객체지향 프로그래밍 - 생성자 App 클래스를 예로 들어 인스턴스 생성하는 과정은 아래와 같아요. 컴파일을 할 때 소스 파일*.java의 클래스가 생성자가 하나도 없다면 컴파일러는 자동적으로 아래와 같은 생성자를 추가해서 컴파일해요. 아무 기능도 수행하지 않기 때문에 생성과 동시에 초기화가 필요한 인스턴스는 반드시 생성자를 선언해줘야 해요. 근데 만약에 매개변수가 있는, 기본 생성자가 아닌 생성자가 선언되어 있고, 기본 ... Object Oriented ProgrammingConstructordeep copyshallow copyOOPJavaConstructor [Java] 객체지향 프로그래밍 - 클래스 내 변수 초기화 변수를 선언하고 처음으로 값을 저장하는 것을 변수의 초기화라고 해요. 변수의 초기화는 경우에 따라 필수 또는 선택적이기도 하지만, 가능하면 선언과 동시에 적절한 값으로 초기화하는 것이 좋아요. 클래스에선 인스턴스 변수는 따로 초기화하지 않고 사용해도 되요. 자료형에 따라 적절한 값으로 초기화를 해주기 때문이에요. 하지만 지역 변수는 반드시 사용하기 전에 초기화해야 해요. 참고로 각 타입의 기... Constructor InitializationObject Oriented ProgrammingExplicit initializationinitialization blockinstance variableOOPJavaConstructor Initialization [Java] 객체지향 프로그래밍 - 제어자 제어자Modifier는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여할 수 있어요. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있어요. 접근 제어자 : public, protected, default, private 단, 접근 제어자의 경우 한번에 네 가지 중 하나만 사용할 수 있어요(public, private을 동시에 적용할 수 없다는 의미에... abstractstaticObject Oriented ProgrammingencapsulationfinalAccess ModifierOOPJavaAccess Modifier [Java] 객체지향 프로그래밍 - 다형성 객체지향 개념에서 다형성이란 여러가지 형태를 가질 수 있는 능력을 의미하며, 자바에서는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있도록 하여 다형성을 프로그래밍적으로 구현했어요. 위 예제처럼 Person과 NoobNoob이 상속 관계에 있으면 부모 클래스 타입의 변수에 자식 클래스 인스턴스를 참조할 수 있게 해요. 그래서 자식 타입의 참조 변수로 부모 타입의 인스턴스를 참조하는 ... Up castingDown CastingObject Oriented ProgrammingPolymorphisminstanceofOOPJavaDown Casting [Java] 객체지향 프로그래밍 - 추상 클래스 클래스를 설계도에 비유하면, 추상 클래스Abstract Class는 미완성 설계도에 비유할 수 있어요. 미완성 설계도로 제품을 완성할 수 없듯이, 추상 클래스를 통해 인스턴스를 생성할 수 없어요. 추상 클래스는 상속을 통해 자식 클래스에 의해서만 완성될 수 있어요. 제품에 공통으로 사용하는 기능들을 naive하게 구현을 하고 작업하게 된다면 추후 다른 파생 제품을 만들 때도 이런 기반을 숙지... Object Oriented ProgrammingOOPJavaabstract classJava [Java] 객체지향 프로그래밍 - 인터페이스 인터페이스Interface는 추상 메서드를 가지지만 추상화 정도가 높아서 추상 클래스와 달리 구체화된 일반 메서드 또는 멤버 변수를 구성원으로 가질 수 없어요. 오직 추상 메서드와 상수만을 멤버로 가질 수 있고 그 외에 다른 어떤 요소도 허용하지 않아요. 그리고 접근 제어자로 public 또는 default만 사용할 수 있어요. (클래스 메서드와 디폴트 메서드 제외) 원래 인터페이스의 모든 ... Object Oriented ProgramminginterfaceOOPJavaJava [Java] 객체지향 프로그래밍 - 내부 클래스 내부 클래스Inner Class는 클래스 내에 선언된 클래스에요. 한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 클래스를 감추면서 코드의 복잡성을 줄일 수 있어요(캡슐화). 내부 클래스 선언 위치에 따라 구분을 지을 수 있어요. 1. 인스턴스 클래스 외부 클래스의 멤버 변수 선언 위치에 선언해요. 외부 클래스의... Static classObject Oriented Programminganonymous classlocal classinner classInstance ClassOOPJavaInstance Class TIL 25 | JavaScript 객체 지향 프로그래밍 02 👏🏻 그렇기 때문에 이런 형식의 객체를 찍어내는 공장(constructor)을 만들거고, 이제 그 공장을 이용해서 객체를 양산해보자!! 그리고 이 Date 를 이용할때에는 new 라는 키워드를 붙여주고 하지만 그럼에도 우린 d1 이라는 객체를 사용할 수 있다. 그런데 앞에 new 라는 키워드를 붙이면 이제 이 함수는 더이상 일반적인 함수가 아니라!! → kim2에 있는 new Person이나... JavaScriptPrototypeObject Oriented ProgrammingJavaScript TIL14: OOP / Inheritance Patterns 객체지향 프로그래밍에서 Instantiation Patterns를 통해 '캡슐화'와 '추상화'에 대해 어느 정도 이해할 수 있게 되었습니다. 이번에는 Inheritance Patterns를 통해 '상속'과 '다형성'에 대해 살펴보겠습니다. Pseudoclassical에서 '상속' 우선 prototype chain 연결(Instance.__proto__ === Class.prototype) 을... OOPObject Oriented Programming상속inheritance객체지향 프로그래밍OOP [TIL0114] Object Oriented Programming Object Oriented Programming이란? Instantiation Patterns JavaScript에서 Object를 생성하는 방법 JavaScript에서 Prototype은 무엇이고 왜 사용해야 하는가? 1. 객체란 무엇인가? 객체에는 속성과 기능이 있다. 속성: Car(자동차)라는 하나의 아이디어(Calss)가 있다고 생각해 보자. 자동차라는 아이디어는 물체가 될 수 없고... TILObject Oriented ProgrammingObject Oriented Programming [TIL]OOP 기계어(0과 1로만 구성된 컴퓨터의 언어), 어셈블리어(상대적으로 저급언어라 할 수 있고, 몇 가지의 명령어와 변수만 사용한다), 고급언어(고급언어에 가까울수록 인간의 언어와 유사하다)로 나뉘며 자바스크립트는 고급언어에 가깝다. 모든 작업을 하나의 코드 안에서 순차적으로 진행하여 특정 기능을 하게 만든다. 프로그램을 구성하는 모든 요소가 객체로 되어있다! 또한 객체를 사용하지 않으면 불가능하... Object Oriented ProgrammingTILOOPOOP TIL 28 | JavaScript 객체 지향 프로그래밍 05 수업을 보며 정리한 내용입니다. JavaScript의 class 문법이 아니라, 전통적인 방법으로 상속하는 방법을 알아보자! 다른 객체를 상속받기 (자바스크립트 표준에서는 이것을 표준으로 인정하고 있지만 브라우저들에서는 대부분 구현하고 있기 때문에 사실상으론 표준이라고 할 수 있기도 하다😅) superObj 라는 오브젝트를 constructor function이 아니라, 객체를 직접 만드는 ... Object Oriented ProgrammingJavaScriptJavaScript TIL13: OOP / Instantiation Patterns OOP(Object Oriented Programming, 객체지향 프로그래밍) 기본 개념 및 특징 Encapsulation(캡슐화) Abstraction(추상화) Inheritance(상속) Polymorphism(다형성) Instantiation Patterns: 인스턴스 객체 정의 방법 Functional Functional Shared Prototypal Pseudoclassical ... Polymorphism다형성추상화inheritanceObject Oriented Programmingencapsulation상속abstraction캡슐화객체지향 프로그래밍Object Oriented Programming 사용성을 고려해 객체를 설계하자 전략 패턴을 이용해 RouteEdge 객체에서 경로 검색 기준에 필요한 정보를 각기 다른 방식으로 가지고 올 수 있도록 코드를 구현한다면 조금 더 깔끔하게 구현할 수 있을 것이라 생각했다. 위와 같이 enum 클래스를 이용해 경로 검색 기준 별로 instance를 만들고, 각 instance가 전략 객체를 통해 자신에게 맞는 weight를 가져올 수 있게 리팩토링을 진행하였다. 만약 메서드의... 우아한테크코스JavaObject Oriented ProgrammingJava